package com.ndp.fb.rdb.api;


import com.ndp.fb.rdb.model.EntrustAccount;
import com.ndp.fb.rdb.model.EntrustAccountExt;
import com.ndp.fb.rdb.model.Pager;

import java.util.List;

/**
 * Created by Hermen on 2014/10/20.
 */
 public interface EntrustAccountRdbService {

    /**
     * 查询所有账号信息
     *
     * @return
     */
     List<EntrustAccount> findAllAdAccount();


     List<EntrustAccount> findAllWithOutAccount();

	List<EntrustAccount> findNeedUploadResource(Long orgId);

    /**
     * 保存账户
     *
     * @param entrustAccount
     * @return
     */
     String saveAdAccount(EntrustAccount entrustAccount);

 

    /**
     * 根据ID同步单个账号信息
     *
     * @param entrustAccount
     * @return “成功：1；失败：0”
     */
     Integer updateAdAccount(EntrustAccount entrustAccount);

    /**
     * 更新广告账号 同意 自定义受众相关条款
     */
    void updateAgreeCustomAudience(Long accountId);

    /**
     * 批量同步账号
     *
     * @param entrustAccounts
     * @return
     */
     Integer batchUpdateAdAccount(List<EntrustAccount> entrustAccounts);

    /**
     * 批量保存entrustAccount
     *
     * @param entrustAccounts
     */
     Integer batchSaveAccounts(List<EntrustAccount> entrustAccounts);



    /**
     * 根据entrustAccountId 查询 EntrustAccount
     *
     * @param entrustAccountId
     * @param isDelele
     */
     EntrustAccount findbyEntrustAccountId(Long entrustAccountId, Integer isDelele);

    /**
     * 根据 应用id 查询所有广告账号
     *
     * @param fbConnectionObjectId
     * @return
     */
    List<EntrustAccountExt> findByConnectionObjectIdAndUserId(Long fbConnectionObjectId, String userId);



    /**
     * 批量删除帐号
     *
     * @param entrustAccounts
     */
     Integer batchDeleteAccounts(List<EntrustAccount> entrustAccounts);


     EntrustAccount findByFbAccountId(Long fbAccountId);

    /**
     * 分页
     *
     * @param userId
     * @param offset
     * @param limit
     * @return
     */
    Pager<EntrustAccountExt> findEntrustAccountsPagerByUserId(String userId,Long fbBusinessId, Integer offset, Integer limit);


	/**     
	 * @discription
	 * @author giser.yang       
	 * 创建时间 2015年6月3日 下午6:01:37     
	 * @param userId
	 * @return     
	 */
	 List<EntrustAccountExt> findAdAccountListByUserIdAll(String userId);
	/**     
	 * @discription
	 * @author giser.yang       
	 * 创建时间 2015年6月3日 下午6:01:37     
	 * @param userId
	 * @return     
	 */
	 List<EntrustAccountExt> findAdAccountListByFBUserIdAll(Long fbUserId);
	/**     
	 * @discription
	 * @author giser.yang       
	 * 创建时间 2015年6月3日 下午6:01:37     
	 * @param userId
	 * @return     
	 */
	 List<EntrustAccountExt> findAdAccountListByUserIdAndBusinessIdAll(String userId,Long businessId);
	/**     
	 * @discription
	 * @author giser.yang       
	 * 创建时间 2015年6月3日 下午6:01:37     
	 * @return
	 */
	 List<EntrustAccountExt> findAdAccountListByFBUserIdAndBusinessIdAll(Long fbUserId,Long businessId);
	/**
	 * 获取指定角色的账户
	 * @discription
	 * @author giser.yang       
	 * 创建时间 2015年6月9日 上午11:34:18     
	 * @param roles
	 * @return
	 */
	 List<EntrustAccount> findAdAccountListByRoles(String... roles);

	 List<EntrustAccountExt> findAdAccountListByUserId(String userId);
	 Long saveorupdateAdaccount(EntrustAccount entrustAccount);


    List<EntrustAccount> findAdAccountListByOrgId(Long orgId);
    
    EntrustAccount findFromCahe(Long accountId);

	List<EntrustAccount> getPagesByUserId(Long pageId, Long orgId);

	List<EntrustAccountExt> findAdAccountListByUserIdAndConnObjId(String ticket, Long connObjId);
}
